蓝牙低耗能标准在开发过程中就考虑到了长电池寿命, 可支持器件依靠单节纽扣电池运行数年。我们假定读者对基本的电气功能概念有所了解, 并了解如何使用示波器和外用表等实验室测试设备。
本文使用SimpleBLEPeripheral示例程序进行功耗测量并使用TI的 CC2640R2F LuanchPad开发板和我公司的CC2640R2F Evaluation Board开发板进行对比。请注意,本文档中提供的结果旨在提供指导。各种各样的因素都将影响蓝牙低产品的功耗。您应针对目标应用方案在受控环境中于硬件上执行测量。
协议栈和IAR安装参考CC2640R2 BLE 开发环境搭建,本例程需要使用Btool,有关BLE Device Monitor使用介绍请参考: BTool。 本文中使用的所有工具可以在CC2640R2开发工具集介绍里获得。
包含在 BLE-Stack 中的通用样例应用 simple_peripheral 非常适合用于分析单独运行在无线 MCU 上的蓝牙低耗能协议的功耗。有关simple_peripheral的编译运行说明请参考编译第一个工程(simple_peripheral)和 运行第一个例程(simple_peripheral)。要获取纯粹的蓝牙低耗能协议分析, 需要按照表 5 中所述在 simple_peripheral 样例应用中进行一些修改。 之所以需要进行修改, 是因为我们的目的是测量 BLE 堆栈单独产生的电流消耗, 因此必须关闭额外的应用处理。
功能 | 说明 |
---|---|
周期性事件 | 发生的唯一应用处理是在建立连接后开始的周期性事件。要从应用中清除周期性事件,只需注释掉simple_peripheral.c文件中 SimpleBLEPeripheral_processStateChangeEvt 函数的GAPROLE_CONNECTED用例中的以下源代码行://Util_startClock(&periodicClock) ;注释掉该行之后, 就绝不会再设置第一个周期性事件的RTOS计时器。 |
LCD | 通过在预定义的符号中添加Display_DISABLE_ALL来禁用所有屏幕。在CCS中,转到“Project Properties”→“Build”→“ARM Compile”→“Advanced Options”→“Predefined Symbols”→“Pre-define NAME”。 在 IAR 中, 转到“Project Options”→“C/C++ Compiler”→“Preprocessor”→“Defined symbols”。 |
连接参数更新 | 在建立连接后不久, 会从外围器件发出自动连接参数请求。 它使用simple_peripheral.c中定义的参数。 在执行测量任务时, 删除该功能并通过对等器件直接控制连接参数会更加便利。在simple_peripheral.c中,将DEFAULT_ENABLE_UPDATE_REQUEST define更改为GAPROLE_LINK_PARAM_UPDATE_WAIT_REMOTE_PARAMS,如下所示:#defineDEFAULT_ENABLE_UPDATE_REQUESTGAPROLE_LINK_PARAM_UPDATE_WAIT_REMOTE_PARAMS |
添加ExtFlash.c 和 ExtFlash.h | ExtFlash.c 和 ExtFlash.h 位于 TI-RTOS 中间件中。通过转到“Project”→“Add Files”将其添加到SBP 应用项目中。此外,使用以下命令将其包含在 simple_peripheral.c 中:#include <ti/mw/extflash/ExtFlash.h> |
关闭外部闪存 | 通过调用 ExtFlash_open();ExtFlash_close() 打开和关闭外部闪存;(在SimpleBLEPeripheral_init()中) |
睡眠时进入standby模式 | 通过在预定义符号中添加POWER_SAVING。转到“Project Options”→“C/C++ Compiler”→“Preprocessor”→“Defined symbols“ |
为了获取不受干扰的电流测量结果,应拆除CC2640R2F Evaluation Board开发板上的跳线。下图显示了已拆除所有跳线的开发板。请注意:拆除JTAG跳线后,芯片的编程和调试功能将变得不可用。外置电源连接3.3V供电接口和GND进行供电,连接下图中蓝色方框部分的供电接口。
如下如所示,在形成连接之前,应使用正确的连接参数。可以根据您的应用选择合适的参数,这里设置的是1秒的连接间隔和0的从机延迟。因此,确保输入这些值后选择"Set"按钮。
外设以通电并且成功连接之后,您可以在BTool界面的"Device Information"字段中看到已连接的外围设备,如图所示。
我们设置以下几个广播间隔进行功率测试:100ms、500ms、1000ms。
蓝牙状态 | 广播间隔 | TI LaunchPad平均电流值 | CC2640R2F Evaluation Board平均电流值 |
---|---|---|---|
广播 | 100 ms | 81.3 uA | 77.2 uA |
广播 | 500 ms | 10.6 uA | 13.1 uA |
广播 | 1000 ms | 6.9 uA | 7.0 uA |
如下图所示。这是在广播周期为100ms使用示波器和外用表获取平均电流信息。示波器两端探头并联一个10欧电阻。测量的平均电压值(平均电流值=平均电压/10)。图中打印了所有参数。作为对比,其中左边为示波器打印的TI CC2640R2F LaunchPad的数据,右边为示波器打印的CC2640R2F Evaluation Board打印的数据。下图中还展示了使用外用表显示的平均电流值,同样左边为TI CC2640R2F LaunchPad的平均电流值。右边为CC2640R2F Evaluation Board的平均电流值。
如下图所示。这是在广播周期为500ms使用示波器和外用表获取平均电流信息。示波器两端探头并联一个10欧电阻。测量的平均电压值(平均电流值=平均电压/10)。图中打印了所有参数。作为对比,其中左边为示波器打印的TI CC2640R2F LaunchPad的数据,右边为示波器打印的CC2640R2F Evaluation Board打印的数据。下图中还展示了使用外用表显示的平均电流值,同样左边为TI CC2640R2F LaunchPad的平均电流值。右边为CC2640R2F Evaluation Board的平均电流值。
如下图所示。这是在广播周期为1000ms使用示波器和外用表获取平均电流信息。示波器两端探头并联一个10欧电阻。测量的平均电压值(平均电流值=平均电压/10)。图中打印了所有参数。作为对比,其中左边为示波器打印的TI CC2640R2F LaunchPad的数据,右边为示波器打印的CC2640R2F Evaluation Board打印的数据。下图中还展示了使用外用表显示的平均电流值,同样左边为TI CC2640R2F LaunchPad的平均电流值。右边为CC2640R2F Evaluation Board的平均电流值。
我们设置以下几个连接间隔进行功率测试:20ms、100ms、500ms、1000ms。
蓝牙状态 | 连接间隔 | TI LaunchPad平均电流值 | CC2640R2F Evaluation Board平均电流值 |
---|---|---|---|
连接 | 20 ms | 269.6 uA | 259.8 uA |
连接 | 100 ms | 61.2 uA | 58.3 uA |
连接 | 500 ms | 7.1 uA | 7.0 uA |
连接 | 1000 ms | 6.9 uA | 7.0 uA |
如下图所示。这是在连接间隔为20ms使用示波器和外用表获取平均电流信息。示波器两端探头并联一个10欧电阻。测量的平均电压值(平均电流值=平均电压/10)。图中打印了所有参数。作为对比,其中左边为示波器打印的TI CC2640R2F LaunchPad的数据,右边为示波器打印的CC2640R2F Evaluation Board打印的数据。下图中还展示了使用外用表显示的平均电流值,同样左边为TI CC2640R2F LaunchPad的平均电流值。右边为CC2640R2F Evaluation Board的平均电流值。
如下图所示。这是在连接间隔为100ms使用示波器和外用表获取平均电流信息。示波器两端探头并联一个10欧电阻。测量的平均电压值(平均电流值=平均电压/10)。图中打印了所有参数。作为对比,其中左边为示波器打印的TI CC2640R2F LaunchPad的数据,右边为示波器打印的CC2640R2F Evaluation Board打印的数据。下图中还展示了使用外用表显示的平均电流值,同样左边为TI CC2640R2F LaunchPad的平均电流值。右边为CC2640R2F Evaluation Board的平均电流值。
如下图所示。这是在连接间隔为500ms使用示波器和外用表获取平均电流信息。示波器两端探头并联一个10欧电阻。测量的平均电压值(平均电流值=平均电压/10)。图中打印了所有参数。作为对比,其中左边为示波器打印的TI CC2640R2F LaunchPad的数据,右边为示波器打印的CC2640R2F Evaluation Board打印的数据。下图中还展示了使用外用表显示的平均电流值,同样左边为TI CC2640R2F LaunchPad的平均电流值。右边为CC2640R2F Evaluation Board的平均电流值。
如下图所示。这是在连接间隔为1000ms使用示波器和外用表获取平均电流信息。示波器两端探头并联一个10欧电阻。测量的平均电压值(平均电流值=平均电压/10)。图中打印了所有参数。作为对比,其中左边为示波器打印的TI CC2640R2F LaunchPad的数据,右边为示波器打印的CC2640R2F Evaluation Board打印的数据。下图中还展示了使用外用表显示的平均电流值,同样左边为TI CC2640R2F LaunchPad的平均电流值。右边为CC2640R2F Evaluation Board的平均电流值。
文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。